草庐IT

9、 Hashcode的作用

全部标签

java - 我应该重写 Collections 的 hashCode() 吗?

假设我有一些包含各种字段的类:classMyClass{privateStrings;privateMySecondClassc;privateCollectioncoll;//...@OverridepublicinthashCode(){//????}}其中,我确实有各种我想存储在HashMap中的对象。为此,我需要拥有MyClass的hashCode()。我必须递归进入所有字段和各自的父类,以确保它们都正确实现了hashCode(),否则MyClass的hashCode()可能不会考虑某些值。这样对吗?我如何处理该集合?我可以一直依赖它的hashCode()方法吗?它会考虑我的s

带有类选择器的javaFX css id选择器不起作用

编辑(9/05/2016):检查我写的答案..Part1我为应用程序的所有TabPanes使用此css:.tab-pane.tab-header-area.tab-header-background{-fx-opacity:0.0;}.tab-pane{-fx-tab-min-width:90.0px;}.tab-pane.tab{-fx-background-color:orange;-fx-background-radius:0.020.00.020.0;-fx-focus-color:transparent;-fx-faint-focus-color:transparent;}.

java - Java 中的 ExecuteUpdate sql 语句不起作用

我正在学习如何将SQL与Java结合使用。我已成功安装JDBC驱动程序,并且能够从数据库中读取记录并将其打印在屏幕上。我的问题发生在尝试执行更新或插入语句时,但没有任何反应。这是我的代码:问题所在的方法publicstaticvoidupdateSchools(ArrayListnewSchool){try{openDatabase();stmt=c.createStatement();intnumberOfRows=stmt.executeUpdate("UPDATEschoolsSETaddress='abc'WHEREabbreviation='2';");System.out.

Javaslang 对象分解不起作用

我正在使用Javaslang-2.1.0-alpha和它的Javaslang-match来做一些对象分解。根据this by blogDaniel在“MatchtheFancyway”部分发表的帖子:Match(person).of(Case(Person("Carl",Address($(),$())),(street,number)->...))应该检索与Address中的两个通配符模式匹配的值进入street和number但该示例甚至无法编译。后来我意识到所有对象都必须包裹在原子模式中,即“Carl”变成了$(“Carl”)。这是阅读后thisissue.我关注了updatedt

Java 8 Stream distinct 不起作用

这就是我正在做的:Listscores=Stream.concat(oldEntries.stream(),newEntries.stream()).sorted().distinct().limit(maxSize).collect(Collectors.toList());我期待一个没有任何重复项的排序列表,但有时列表中有重复项。我重写了hashCode和equals方法,我还观察到这些方法每次都返回正确的值。任何人都可以看到我的流有什么问题吗?这是我的equals()和hashCode()它们是由IDEA自动生成的:..privateintuserId;privateintlev

java - guava-libraries : Is Objects. hashCode(Object[]) 碰撞安全吗?

在查看覆盖hashCode()的不同选项时,我被定向到GoogleGuava库中的Objects.hashCode(Object[])(javadoc).javadoc声明它委托(delegate)给Arrays.hashCode(Object[])。在许多不同的对象类型中使用此方法是否安全?这是否容易发生哈希冲突,或者这不太可能仅仅是因为容器通常只包含一种类型的对象?作为一个简单的例子,考虑以下类,publicclassStudent{privatefinalStringname;publicStudent(Stringname){this.name=name;}@Overridep

java - 创建一个新线程是否有刷新缓存的副作用?

我想知道在Java中创建新线程是否会触发缓存刷新。假设我按以下顺序做这样的事情:线程运行并设置变量X。线程创建一个新线程。新线程访问X。我的问题是:新线程是否在创建时或开始执行时保证看到旧线程在步骤1中对X所做的更新?我明白,如果旧线程将来更改了X的值,则不能保证新线程会看到这些更改。没关系。我只想知道新线程在启动时是否会看到正确的值而不需要显式同步。当我最初决定研究这个主题时,我以为简单的谷歌搜索会立即揭示答案,但出于某种原因,我找不到任何解决这个问题的结果。 最佳答案 是的,是的。在Java中,有一种“先于发生”的关系,它指定了

java - Spring Data 网页分页 "page"参数不起作用

我正在尝试让SpringData的Web分页正常工作。在这里描述:http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/repositories.html#web-pagination这是我的Java(SpringWebMVC@Controller处理程序方法):@RequestMapping(value="/list",method=RequestMethod.GET)publicStringlist(@PageableDefaults(value=50,pageNumber=0

java - 如果我的类在 Java 中实现了可比性,我是否需要 equals 和 Hashcode 方法?

我在canStringBufferobjectsbekeysinTreeSetinJava?上找到了这条评论“Java中的map使用了2种识别策略(或多或少)。散列:将输入“Foo”转换为尽可能最好的尝试,以生成一个唯一访问数组索引的数字。(纯粹主义者,请不要辱骂我,我是故意简化的)。该索引是存储您的值的位置。“Foo”和“Bar”实际上可能生成相同的索引值,这意味着它们都将映射到相同的数组位置。显然这是行不通的,所以这就是“equals()”方法的用武之地;它用于消除歧义比较:通过使用比较方法,您不需要这个额外的消歧步骤,因为比较从一开始就不会产生这种冲突。“Foo”等于的唯一键是“

java - 删除 Controller 不起作用

我真的开始为我的小应用程序使用Controller,我现在有这个:@RequestMapping("/users/{id}")publicModelAndViewshowMemeber(@PathVariableIntegerid){ModelAndViewmav=newModelAndView("user/show");mav.addObject("title","ShowUser");mav.addObject("user",userService.findById(id));returnmav;}@RequestMapping(value="/users/{id}",method